package com.ruoyi.web.service.impl;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.stereotype.Service;
import com.ruoyi.web.mapper.NewsMapper;
import com.ruoyi.web.domain.News;
import com.ruoyi.web.service.INewsService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * 新闻管理（新）Service业务层处理
 * 
 * @author drx
 * @date 2024-03-19
 */
@Service
public class NewsServiceImpl implements INewsService 
{
    @Resource
    private NewsMapper newsMapper;

    /**
     * 查询新闻管理（新）
     * 
     * @param id 新闻管理（新）主键
     * @return 新闻管理（新）
     */
    @Override
    public News selectNewsById(Long id)
    {
        return newsMapper.selectNewsById(id);
    }

    /**
     * 查询新闻管理（新）列表
     * 
     * @param news 新闻管理（新）
     * @return 新闻管理（新）
     */
    @Override
    public List<News> selectNewsList(News news)
    {
        return newsMapper.selectNewsList(news);
    }

    /**
     * 新增新闻管理（新）
     * 
     * @param news 新闻管理（新）
     * @return 结果
     */
    @Override
    public int insertNews(News news)
    {
        news.setCreateTime(DateUtils.getNowDate());
        news.setCreateBy(ShiroUtils.getSysUser().getLoginName());
        news.setCreateName(ShiroUtils.getSysUser().getUserName());
        news.setUpdateTime(DateUtils.getNowDate());
        news.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        news.setUpdateName(ShiroUtils.getSysUser().getUserName());
        news.setHits(500L);
        return newsMapper.insertNews(news);
    }

    /**
     * 修改新闻管理（新）
     * 
     * @param news 新闻管理（新）
     * @return 结果
     */
    @Override
    public int updateNews(News news)
    {
        news.setUpdateTime(DateUtils.getNowDate());
        news.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        news.setUpdateName(ShiroUtils.getSysUser().getUserName());
        return newsMapper.updateNews(news);
    }

    /**
     * 批量删除新闻管理（新）
     * 
     * @param ids 需要删除的新闻管理（新）主键
     * @return 结果
     */
    @Override
    public int deleteNewsByIds(String ids)
    {
        return newsMapper.deleteNewsByIds(Convert.toStrArray(ids),ShiroUtils.getSysUser().getLoginName());
    }

    /**
     * 删除新闻管理（新）信息
     * 
     * @param id 新闻管理（新）主键
     * @return 结果
     */
    @Override
    public int deleteNewsById(Long id)
    {
        return newsMapper.deleteNewsById(id,ShiroUtils.getSysUser().getLoginName());
    }

    /**
     * 修改news发布状态
     *
     * @param news
     * @return 结果
     */
    @Transactional
    public int updateNewsState(News news)
    {
        news.setUpdateTime(DateUtils.getNowDate());
        news.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        news.setUpdateName(ShiroUtils.getSysUser().getUserName());
        return newsMapper.updateNews(news);
    }

    /**
     * 前端查询详情用
     *
     * @param id News
     * @return AjaxResult
     */
    @Override
    public AjaxResult getNewsById(Long id)
    {
        AjaxResult ajaxResult=new AjaxResult();
        try{
            News news = newsMapper.selectNewsById(id);
            if(null != news){
                //状态为未启用时，返回空对象
                if("0".equals(news.getState())){
                    ajaxResult.put("data",null);
                    ajaxResult.put("code","1");
                    ajaxResult.put("msg","查询成功！");
                    return  ajaxResult;
                }
            }
            ajaxResult.put("data",news);
            ajaxResult.put("code","1");
            ajaxResult.put("msg","查询成功！");
        } catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code","500");
            ajaxResult.put("msg","获取新闻详情失败，请联系管理员！");
        }
        return ajaxResult;
    }

    /*
    * 根据id查询上一篇下一篇
    * */
    @Override
    public AjaxResult getUpandDown(Long id){
        AjaxResult ajaxResult = new AjaxResult();
        try{
            List<HashMap<String, Object>> upandDown = newsMapper.getUpandDown(id);
            ajaxResult.put("data",upandDown);
            ajaxResult.put("code","200");
            ajaxResult.put("msg","查询成功！");
        }catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code","500");
            ajaxResult.put("msg","获取新闻上下篇失败，请联系管理员！");
        }
        return ajaxResult;
    }

    /**
     * 获取首页-药品知识
     *
     * @return AjaxResult
     */
    public AjaxResult getNewsListView(){
        AjaxResult ajaxResult = new AjaxResult();
        try{
            List<News> list= newsMapper.getNewsListView();
            ajaxResult.put("data",list);
            ajaxResult.put("code", Constants.SUCCESS);
            ajaxResult.put("msg","查询成功！");
        }catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code",Constants.FAIL);
            ajaxResult.put("msg","获取药品知识失败，请联系管理员！");
        }
        return ajaxResult;
    }
    /*
    * 增加新闻浏览量
    * */
    public void updateNewsBrowseNum(Long id){
        newsMapper.updateNewsBrowseNum(id);
    }

    /**
     * 获取药品详情说明书集合
     *
     * @return AjaxResult
     */
    public AjaxResult getNewsByDrugId(Long drugId){
        AjaxResult ajaxResult = new AjaxResult();
        try{
            News news = new News();
            news.setKeyword("药品百科");
            news.setState("1");
            news.setSize(5);
            List<News> ypbkList= newsMapper.selectNewsList(news);
            news.setKeyword("治疗效果");
            List<News> zlxgList= newsMapper.selectNewsList(news);
            news.setKeyword("用法用量");
            List<News> yfylList= newsMapper.selectNewsList(news);
            news.setKeyword("副作用");
            List<News> fzyList= newsMapper.selectNewsList(news);
            news.setKeyword("注意事项");
            List<News> zysxList= newsMapper.selectNewsList(news);
            news.setKeyword("药物相互作用");
            List<News> ywxhzyList= newsMapper.selectNewsList(news);
            news.setKeyword("价格与购买");
            List<News> jgygmList= newsMapper.selectNewsList(news);
            ajaxResult.put("ypbkList",ypbkList);
            ajaxResult.put("zlxgList",zlxgList);
            ajaxResult.put("yfylList",yfylList);
            ajaxResult.put("fzyList",fzyList);
            ajaxResult.put("zysxList",zysxList);
            ajaxResult.put("ywxhzyList",ywxhzyList);
            ajaxResult.put("jgygmList",jgygmList);
            ajaxResult.put("code", Constants.SUCCESS);
            ajaxResult.put("msg","查询成功！");
        }catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code",Constants.FAIL);
            ajaxResult.put("msg","获取药品说明书集合失败，请联系管理员！");
        }
        return ajaxResult;
    }
}
